qrisp.QuantumFloat.sign#

QuantumFloat.sign()[source]#

Returns the sign qubit.

This qubit is in state \(\ket{1}\) if the QuantumFloat holds a negative value and in state \(\ket{0}\) otherwise.

For more information about the encoding of negative numbers check the publication.

Warning

Performing an X gate on this qubit does not flip the sign! Use inplace multiplication instead.

>>> from qrisp import QuantumFloat
>>> qf = QuantumFloat(3, signed = True)
>>> qf[:] = 3
>>> qf *= -1
>>> print(qf)
{-3: 1.0}
Returns:
Qubit

The qubit holding the sign.

Raises:
Exception

Tried to retrieve sign qubit of unsigned QuantumFloat.

Examples

We create a QuantumFloat, initiate a state that has probability 2/3 of being negative and entangle a QuantumBool with the sign qubit.

>>> from qrisp import QuantumFloat, QuantumBool, cx
>>> qf = QuantumFloat(4, signed = True)
>>> n_amp = 1/3**0.5
>>> qf[:] = {-1 : n_amp, -2 : n_amp, 1 : n_amp}
>>> qbl = QuantumBool()
>>> cx(qf.sign(), qbl)
>>> print(qbl)
{True: 0.6667, False: 0.3333}